CircleCI で git clone を1秒でも早くしたい(git-shallow-clone)
CircleCIを利用するとき、リポジトリからgit cloneをします。実際には、用意されているcheckout
コマンドを利用することが多いと思います。
リポジトリサイズが大きい場合(バイナリファイルが多く含まれるなど)、すべてをgit cloneするとデータ量が多く時間がかかる可能性があります。 そのため、1秒でも早くgit cloneするために、CircleCIでgit shallow cloneをしてみます。
おすすめの方
- CircleCIでgit shallow cloneしたい方
- CircleCIで1秒でも早くgit cloneしたい方
実験用のリポジトリを作成して、CircleCIを設定する
実験用のリポジトリを作成する
適当にリポジトリを作成します。
READMEを適当に記載する
# CircleCI-git-shallow-clone-test ## 今日の天気 晴れです。 ## 明日の天気 雨です。
CircleCIの設定ファイルを作成する
mkdir .circleci touch .circleci/config.yml
CircleCIのconfigファイル
git-shallow-cloneのCircleCI Orbを利用します。今回はデフォルトで利用しますが、いくつかのオプションも指定できます。
version: 2.1 orbs: # https://circleci.com/developer/orbs/orb/guitarrapc/git-shallow-clone git-shallow-clone: guitarrapc/git-shallow-clone@2.8.0 jobs: build: docker: - image: cimg/base:2023.10 steps: - git-shallow-clone/checkout - run: echo "this is the build job" - run: cat README.md test: docker: - image: cimg/base:2023.10 steps: - git-shallow-clone/checkout - run: echo "this is the test job" - run: cat README.md workflows: build_and_test: jobs: - build - test: requires: - build
更新後、git pushします。
CircleCIでプロジェクトを設定する
もし、3rd party製のCircleCI Orbを利用できない場合は、Orb Security Settings を確認し、更新してください。
Jobを確認すると、mainブランチのREADME.mdが表示されました。
いろんなブランチでREADME.mdを更新して確認する
aaaブランチ
mainブランチをベースにして、aaaブランチを作成します。
git switch -c aaa main
# CircleCI-git-shallow-clone-test ## 今日の天気aaa 晴れです。 ## 明日の天気aaa 雨です。
git pushしてREADME.mdを確認すると、問題ありません。
bbbブランチ
aaaブランチをベースにして、bbbブランチを作成します。
git switch -c bbb aaa
# CircleCI-git-shallow-clone-test ## 今日の天気aaa 晴れです。bbb ## 明日の天気aaa 雨です。bbb
git pushしてREADME.mdを確認すると、問題ありません。
xxxブランチ
mainブランチをベースにして、xxxブランチを作成します。
git switch -c xxx main
# CircleCI-git-shallow-clone-test ## 今日の天気 xxx晴れです。 ## 明日の天気 xxx雨です。
git pushしてREADME.mdを確認すると、問題ありません。
さいごに
CircleCIでshallow clone(depth指定)をしてみました。 リポジトリ規模が大きい場合や、cloneで取得するデータ量を少なくしたい場合などに活用できると思います。